// utils/eventBus.js
const eventBus = {
  events: {},     // 存储事件回调
  cache: {},      // 存储每个事件的最新数据

  // 监听事件
  on(eventName, callback) {
    if (!this.events[eventName]) {
      this.events[eventName] = [];
    }
    this.events[eventName].push(callback);

    // 🔥 关键：如果已经有缓存数据，立即触发一次给新监听者
    if (this.cache[eventName] !== undefined) {
      callback(this.cache[eventName]);
    }
  },

  // 取消监听
  off(eventName, callback) {
    if (!this.events[eventName]) return;

    if (!callback) {
      delete this.events[eventName];
    } else {
      this.events[eventName] = this.events[eventName].filter(cb => cb !== callback);
    }
  },

  // 触发事件并缓存数据
  emit(eventName, data) {
    // ✅ 缓存最新数据
    this.cache[eventName] = data;

    if (this.events[eventName]) {
      this.events[eventName].forEach(callback => {
        try {
          callback(data);
        } catch (error) {
          console.error(`Event ${eventName} callback error:`, error);
        }
      });
    }
  },

  // 可选：获取缓存中的数据（用于页面初始化）
  get(eventName) {
    return this.cache[eventName];
  }
};

export default eventBus;